<?php

class DbYspMysql {

    private $conn;

    function __construct($db_config) {
        $link = mysql_connect($db_config['host'], $db_config['user'], $db_config['pwd']);
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }
        $this->conn = $link;
        mysql_query("set names 'utf8'");
        mysql_select_db($db_config['dbname'], $link) or die('Can\'t use foo : ' . mysql_error());
    }

    /**
     * 取当前数据库版本号
     */
    function getMysqlVersion() {
        $rs = mysql_get_server_info($this->conn);
        $arr = explode('-', $rs);
        return $arr[0];
    }

    /**
     * 执行SELECT语句
     * @param string $tb_name 表名
     * @param array $fileds_list 字段列表，用逗号分隔
     * @param string $where 查询条件
     * @param string $order_by 排序方式
     * @param string $limit 限制行数
     * @return array 返回二维数组
     */
    function getMoreSelect($tb_name, $fileds_list = '*', $where = '', $order_by = '', $limit = '') {
        $sql = "SELECT $fileds_list FROM $tb_name $where $order_by $limit";
        $rs = mysql_query($sql);
        $rows = array();
        while ($row = mysql_fetch_assoc($rs)) {
            $rows[] = $row;
        }
        return $rows;
    }

    /**
     * 执行SELECT语句
     * @param string $tb_name 表名
     * @param array $fileds_list 字段列表，用逗号分隔
     * @param string $where 查询条件
     * @param string $order_by 排序方式
     * @return array 返回一维数组
     */
    function getOneSelect($tb_name, $fileds_list = '*', $where = '', $order_by = '') {
        $sql = "SELECT $fileds_list FROM $tb_name $where $order_by LIMIT 1";
        $rs = mysql_query($sql);
        $row = mysql_fetch_assoc($rs);
        return $row;
    }

    /**
     * 执行INSERT SQL语句
     * @param string $tb_name 表名
     * @param array $field_array 字段一维数组形式
     * @return integer 整数
     */
    function sqlInsert($tb_name, $field_array) {
        $field_str = '';
        $value_str = '';
        foreach ($field_array as $key => $value) {
            $field_str .= "$key,";
            $value_str .= "'$value',";
        }
        $field_str = rtrim($field_str, ',');
        $value_str = rtrim($value_str, ',');
        $sql = "INSERT INTO $tb_name($field_str) VALUES($value_str)";
        $rs = mysql_query($sql);
        return mysql_insert_id();
    }

    /**
     * 执行UPDATE SQL语句
     * @param string $tb_name 表名
     * @param array $field_array 字段一维数组
     * @param string $where WHERE条件
     * @return int 返回一个影响行数
     */
    function sqlUpdate($tb_name, $field_array, $where, $num_no_strong = array(0)) {
        $field_str = '';
        $i = 0;
        foreach ($field_array as $key => $value) {
            $i++;
            if (in_array($i, $num_no_strong)) {
                $field_str .= "$key=$value,";
            } else {
                $field_str .= "`$key`='$value',";
            }
        }
        $field_str = substr($field_str, 0, -1);
        $sql = trim("UPDATE $tb_name SET $field_str $where");
        $rs = mysql_query($sql);
        return mysql_affected_rows();
    }

    /**
     * 执行删除的SQL语句
     * @param string $tb_name 表名
     * @param string $where WHERE条件
     * @return int 返回一个影响行数
     */
    function sqlDelete($tb_name, $where = '') {
        $sql = trim("DELETE FROM $tb_name $where");
        mysql_query($sql);
        return mysql_affected_rows();
    }

}
